Перейти к основному содержимому

6.1. Логирование

Мониторинг и диагностика Apache Ozone: Логирование

Логирование — важная часть мониторинга и диагностики Apache Ozone, которая помогает отслеживать состояние системы, выявлять ошибки и обеспечивать стабильную работу кластера. Логи записываются для каждого компонента Ozone, включая Ozone Manager (OM), Storage Container Manager (SCM), DataNode Service, S3 Gateway и Recon. В этом разделе описываются принципы логирования в Apache Ozone, настройка уровней логирования и расположение лог-файлов.


1. Основные компоненты логирования

Apache Ozone использует Log4j для управления логированием. Каждый компонент ведёт отдельный лог, что позволяет легко отслеживать работу конкретного сервиса и находить источники ошибок.

Основные лог-файлы Ozone:

  • Ozone Manager (OM): /var/log/ozone/om.log
  • Storage Container Manager (SCM): /var/log/ozone/scm.log
  • DataNode: /var/log/ozone/datanode.log
  • S3 Gateway (S3G): /var/log/ozone/s3g.log
  • Recon: /var/log/ozone/recon.log

2. Уровни логирования

Log4j поддерживает несколько уровней логирования, которые можно настроить для каждого компонента:

  • ERROR: Логируются только критические ошибки, требующие немедленного внимания.
  • WARN: Логируются предупреждения, которые не критичны, но могут указывать на потенциальные проблемы.
  • INFO: Логируются информационные сообщения о выполнении ключевых операций.
  • DEBUG: Логируются подробные сообщения для диагностики и отладки.
  • TRACE: Логируются наиболее подробные данные, используемые для глубокого анализа системы.

Рекомендуется использовать уровень INFO для рабочих сред и DEBUG или TRACE для отладки и тестирования.


3. Настройка логирования

Настройка логирования осуществляется в файле log4j.properties, который находится в директории конфигурации Ozone ($OZONE_HOME/conf). Для каждого компонента можно указать свой уровень логирования и местоположение логов.

Пример файла log4j.properties:

# Уровень логирования для Ozone Manager
log4j.logger.ozone.om=INFO, omAppender
log4j.appender.omAppender=org.apache.log4j.RollingFileAppender
log4j.appender.omAppender.File=/var/log/ozone/om.log
log4j.appender.omAppender.MaxFileSize=10MB
log4j.appender.omAppender.MaxBackupIndex=5
log4j.appender.omAppender.layout=org.apache.log4j.PatternLayout
log4j.appender.omAppender.layout.ConversionPattern=%d{ISO8601} [%t] %-5p %c: %m%n

# Уровень логирования для Storage Container Manager
log4j.logger.ozone.scm=INFO, scmAppender
log4j.appender.scmAppender=org.apache.log4j.RollingFileAppender
log4j.appender.scmAppender.File=/var/log/ozone/scm.log
log4j.appender.scmAppender.MaxFileSize=10MB
log4j.appender.scmAppender.MaxBackupIndex=5
log4j.appender.scmAppender.layout=org.apache.log4j.PatternLayout
log4j.appender.scmAppender.layout.ConversionPattern=%d{ISO8601} [%t] %-5p %c: %m%n

4. Переопределение уровня логирования в режиме реального времени

Для изменения уровня логирования в режиме реального времени без перезапуска компонента используйте команду:

bin/ozone debug setLogLevel --class <class_name> --level <log_level>

Пример изменения уровня логирования для Ozone Manager на DEBUG:

bin/ozone debug setLogLevel --class org.apache.hadoop.ozone.om --level DEBUG

5. Просмотр логов в реальном времени

Для просмотра логов в реальном времени можно использовать команду tail -f:

tail -f /var/log/ozone/om.log
tail -f /var/log/ozone/scm.log

Эти команды позволяют следить за записями логов по мере их появления, что удобно для оперативного отслеживания событий в кластере.


6. Ротация логов

Для управления размером лог-файлов и предотвращения их переполнения в Log4j предусмотрена ротация логов. Она позволяет создавать резервные копии лог-файлов при достижении заданного размера и хранить несколько последних копий.

В log4j.properties можно задать настройки ротации:

log4j.appender.omAppender.MaxFileSize=10MB
log4j.appender.omAppender.MaxBackupIndex=5
  • MaxFileSize: Максимальный размер файла лога. Когда файл достигает этого размера, создаётся новый файл.
  • MaxBackupIndex: Количество резервных копий, которые будут храниться.

7. Примеры логов

  1. Информационные сообщения (INFO):

    2023-04-10 12:00:00 INFO org.apache.hadoop.ozone.om.OzoneManager: Volume myvolume created successfully.
  2. Сообщения об ошибках (ERROR):

    2023-04-10 12:05:00 ERROR org.apache.hadoop.ozone.scm.SCM: Failed to allocate container: DataNode not available.
  3. Предупреждения (WARN):

    2023-04-10 12:10:00 WARN org.apache.hadoop.ozone.datanode.DataNodeService: DataNode is running low on disk space.

Эти сообщения помогают оперативно выявлять и решать проблемы, возникающие в кластере.


8. Использование логов для диагностики и решения проблем

Логи предоставляют ценную информацию о состоянии кластера, производительности и возникающих проблемах. Вот несколько способов использования логов для диагностики:

  • Проблемы с DataNode: Проверяйте логи DataNode на наличие ошибок и предупреждений, связанных с дисковым пространством, подключением и репликацией.
  • Проблемы с SCM: Логи SCM помогают обнаруживать проблемы с контейнерами и распределением реплик, а также отслеживать состояние узлов.
  • Ошибки аутентификации: Логи S3 Gateway содержат информацию о попытках подключения, что полезно для диагностики проблем с доступом.
  • Веб-интерфейс Recon: Логи Recon помогают отслеживать состояние кластера, включая отчёты о неконсистентных контейнерах и недостающих репликах.

Итог

Логирование — это важный аспект мониторинга и диагностики Apache Ozone, обеспечивающий прозрачность работы кластера и упрощающий решение проблем. Логи для каждого компонента Ozone ведутся отдельно и могут быть настроены для различных уровней детализации. Понимание и правильное использование логов позволяет администраторам кластера своевременно выявлять и устранять проблемы, обеспечивая стабильную работу хранилища данных.